home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #2 / Amiga Plus CD - 1995 - No. 2.iso / internet / faq / englisch / comp.os.chorus < prev    next >
Encoding:
Text File  |  1995-04-11  |  24.7 KB  |  561 lines

  1.  
  2.         Table of Contents
  3.         =================
  4.  
  5. 1. General Information
  6.     1.1. Organization and Availability of this FAQ
  7.     1.2. What's New?
  8.     1.3. What is CHORUS?
  9.     1.4. How to Contact Chorus Systems?
  10. 2. Documentation
  11.     2.1. Documentation Available through Anonymous FTP
  12.     2.2. Papers on CHORUS
  13.     2.3. Other references
  14. 3. Chorus Product Offering
  15.     3.1. Overview
  16.     3.2. Offering for Universities
  17. 4. CHORUS Microkernel
  18.     4.1. General
  19.     4.2. Supported Microprocessors
  20.     4.3. Porting on various platforms
  21.     4.4. Scheduling and real-time
  22.     4.5. CHORUS on Transputers
  23.     4.6. Comparison with other OS
  24.     4.7. Perfomances
  25.     4.8. Object Oriented issues
  26. 5. OS Personalities
  27.     5.1. OS personalities available on top of CHORUS
  28.     5.2. CHORUS/MiX V.3.2
  29.  
  30.     --------------
  31.  
  32. 1. General Information
  33.    ===================
  34. 1.1. Organization and Availability of this FAQ
  35.      -----------------------------------------
  36.   This FAQ contains informations related to the CHORUS operating system,
  37. description of the products and contacts. It will be progressively 
  38. updated according to the discussions held in this newsgroup and the 
  39. evolution of the products.
  40.  
  41.   It is posted once a month in the following newsgroups:<<comp.os.chorus, 
  42. news.answers, comp.answers >>. Copies of the FAQ can also be obtained by 
  43. e-mail by sending a request to "chorus-adm@comp.lancs.ac.uk". A hypertext
  44. version of the FAQ is available on the World Wide Web at the following 
  45. URL:"http://www.comp.lancs.ac.uk/computing/users/pr/www/chorus/faq.html"
  46.  
  47.   You can make any comments, suggestions or contributions to this 
  48. FAQ by sending an e-mail to "chorus-adm@comp.lancs.ac.uk" or 
  49. "pr@comp.lancs.ac.uk" or by discussions in the newsgroup.
  50.  
  51. 1.2. What's New?
  52.      -----------
  53.   - Modification of the phone/fax numbers for CSI,
  54.   - Some answers specific to transputers have been summarized,
  55.   - Availability of the FAQ on the World Wide Web with the following 
  56.     URL:"http://www.comp.lancs.ac.uk/computing/users/pr/www/chorus/faq.html"
  57.   - update of the the 
  58.  
  59. 1.3. What is CHORUS?
  60.      --------------
  61.   CHORUS is a family of open microkernel-based operating system
  62. components to meet advanced distributed computing needs in areas such
  63. as telecommunications, internetworking, embedded systems, realtime,
  64. "mainframe UNIX", supercomputing and high availability. The CHORUS/MiX
  65. multiserver implementations of UNIX allow to dynamically integrate
  66. part or all of standard UNIX functionalities and services in the above
  67. application areas.
  68.  
  69.   CHORUS is designed, developed and marketed by Chorus Systems.
  70.  
  71.  
  72. 1.4. How to Contact Chorus Systems
  73.      -----------------------------
  74.      North America:
  75.     Chorus Systems Inc.
  76.     1999 South Bascom Avenue, Suite 400
  77.     Campbell, CA 95008
  78.     United States
  79.     Phone: +1 (408) 879-4100
  80.     Fax:   +1 (408) 879-4102
  81.     Voice Mail:  +1 (408) 291 8832
  82.     Email: info@chorus.com
  83.  
  84.      Europe:
  85.     Chorus systemes SA
  86.     6 avenue Gustave Eiffel
  87.     F-78182 St Quentin-en-Yvelines Cedex
  88.     France                        
  89.     Phone: +33 (1) 30 64 82 00        
  90.     Fax:   +33 (1) 30 57 00 66        
  91.     Email: info@chorus.fr         
  92.  
  93.      Asia Pacific:
  94.     Chorus Systems KK
  95.     Mitsutake Building Ikejiri, 8F
  96.     3-22-4 Ikejiri, Setagaya Ku
  97.     Tokyo 154
  98.     Japan
  99.     Phone: +81 (3) 5430-1131
  100.     Fax:   +81 (3) 5430-1133
  101.     Email: info-ap@chorus.com
  102.  
  103. 2. Documentation
  104.    =============
  105. 2.1. Documentation Available through Anonymous FTP
  106.      ---------------------------------------------
  107.   There are several technical reports on CHORUS available via anonymous
  108. FTP from Chorus systemes, France: ftp.chorus.fr [192.33.15.3],
  109. directory pub/chorus-reports (see the file "index" for an overview).
  110. A set of slides on CHORUS is also available in the directory 
  111. "pub/chorus-slides", documents CS-TR-92-64 (PostScript, versions 1-up 
  112. and 2-up). The latest version is the document CS-TR-92-64.4, Apr 94.
  113.  
  114.   Product Data Sheets are available (in ascii or PostScript format) in
  115. the directory "pub/chorus-datasheets".
  116.  
  117.   Those reports are also available through the World Wide Web at Chorus
  118. systemes: ftp://ftp.chorus.fr/pub.
  119.  
  120. 2.3. Papers on CHORUS
  121.      ----------------
  122. [Bricker, 1991] A. Bricker, M. Gien, M. Guillemont, J. Lipkis, D. Orr and
  123. M. Rozier, "A new look at micro-kernel-based UNIX operating systems:
  124. Lessons in performance and compatibility". Proc. of the EurOpen Spring'91 
  125. Conference, Tromsoe, Norway, 20-24 May 1991.
  126. Chorus Systems Technical Report CS-TR-91-7
  127.  
  128. [Coulson, 1994] Coulson G., and G.S. Blair. "Microkernel Support for 
  129. Continuous Media in Distributed Systems". Computer Networks and ISDN
  130. Systems, Special Issue on Multimedia, 1994; also available as internal
  131. report MPG-93-04, Computing Dept., Lancaster University.
  132.  
  133. [Gaultier, 1994] O. Gautier and Y. Metais. "Mise en Place d'une Plateforme
  134. CHORUS, Conception et Implementation d'un Ordonnanceur a Echeance au Sein 
  135. du Noyau Chorus". Memoire CNAM, Paris, March 1994.
  136.  
  137. CS/TR-94-82.1 "CHORUS Kernel v3 r5 for T425/T805 Connection Manager and
  138.         Aserver Library" (Internal Report)
  139.  
  140. CS/TR-94-81.1 "CHORUS Kernel v3 r5 for T425/T805 Host Server User's
  141.         Manual, Aserver Guide" (Internal Report)
  142.  
  143. 2.4. Other references
  144.      ----------------
  145. [Bradley, 1993] J Bradley Chen and Brian N Bershad
  146. "The Impact of Operating System Structure on Memory System Performance",
  147. ACM SIGOPS Dec. '93
  148.  
  149. [Coulouris, 1994] G. Coulouris, J. Dollimore and T. Kindberg. "Distributed
  150. Systems, Concepts and Design", Addison-Wesley, second edition, 1994.
  151.  
  152. [Douglis et al., 1992] Douglis, F., Kaashoek, M.F., and Tanenbaum,
  153. A.S.: "A Comparison of Two Distributed Systems: Amoeba and Sprite,"
  154. Computing Systems, vol. 4, Fall 1991 (sic).
  155.  
  156. [Dean, 1992] R. Dean and F. Armand. "Data Movement in Kernelized Systems".
  157. Proceedings of the USENIX Workshop on Micro-Kernels and Other Kernel 
  158. Architectures, pp. 243-261, April 1992.
  159.  
  160. [Tanenbaum, 1992]  Andrew S. Tanenbaum: "Modern Operating Systems",
  161. Prentice-Hall, 1992.
  162.  
  163. [Tanenbaum, 1994] Andrew S. Tanenbaum, "Distributed Operating Systems", 
  164. Prentice-Hall, ISBN 0-13-219908-4
  165.  
  166. 3. Chorus Product Offering
  167.    =======================
  168. 3.1. Overview
  169.      --------
  170.   All CHORUS products, except CHORUS/Fusion, are source products.
  171.  
  172.   The CHORUS Nucleus is a realtime distributed microkernel; current
  173. release is v3 r5.2 (Apr 94).
  174.  
  175.   CHORUS/Simulator is a port of the CHORUS microkernel on top of UNIX;
  176. current release is v3 r5.2 (May 94). It runs as a UNIX process, e.g.
  177. under SunOS 4.1 on a Sun SPARCstation, and allows one to develop and
  178. test applications using the microkernel's API.
  179.  
  180.   CHORUS/MiX V.4 is a distributed multi-server implementation of 
  181. UNIX SVR4.0 on top of the CHORUS microkernel; current release is 
  182. r3.0 (Jan 94). E.g. on a 386/486 PC/AT, it offers binary compatibility 
  183. with native SVR4.0v4. MiX V.4 requires a Novell/USG SVR4.0 sources license.
  184.  
  185.   CHORUS/Fusion for SCO Open Systems Software is a multi-server
  186. implementation of SCO UNIX and extends it with realtime functionality 
  187. (POSIX 1003.1b and .1c, i.e.  the former .4 and .4a interfaces) and 
  188. clustering functionality.  CHORUS/Fusion is developed and marketed 
  189. jointly by SCO and Chorus as a binary product on Intel-based PC's.
  190. The current release is r1.0 (Jun 94).
  191.  
  192.   CHORUS/COOL is a distributed programming environment for object-oriented
  193. applications. CHORUS/COOL supports the dynamic creation of C++ objects,
  194. these objects can be invoked, using C++ mechanism in a system wide
  195. transparent way. Objects can migrate, and remain persistent unless
  196. explicitly deleted.  The programming model used is based on the Object
  197. Management Group's architecture (OMG). Current release: v2 r1.
  198.  
  199.   CHORUS/ClassiX is host-target cross-development environment 
  200. for C-written applications, named C_actors. C_actors can be loaded,
  201. unloaded and debugged dynamically from the host (e.g. SPARCstation/SunOS) 
  202. on the target (e.g. ix86 PC/AT), interconnected via Ethernet. 
  203. C_actor applications can interoperate with UNIX on the host
  204. through TCP/IP sockets and NFS. On the target, there is only the
  205. CHORUS/Nucleus microkernel and the CHORUS/C_actor subsystem but no
  206. CHORUS/MiX UNIX System V subsystem.
  207. The current release of this product is r1.0 (Jun 94).
  208.  
  209.  
  210. 3.2. Offering for Universities
  211.      -------------------------
  212.   Chorus Systems has special programs for universities. More information 
  213. on offerings, conditions, etc is available via ftp on "ftp.chorus.fr" in 
  214. the following ASCII files
  215.     - pub/README
  216.     - pub/academic/README
  217.     - pub/academic/offerings
  218.  
  219.   If you have questions, you may contact Didier.Irlande@chorus.fr.
  220.  
  221.  
  222. 4. CHORUS Microkernel
  223.    ==================
  224. 4.1. General
  225.      -------
  226.     * What is a microkernel?
  227.     A "microkernel" is an operating system with only the essential services, 
  228.     such as interprocess communication, short-term scheduling, and memory 
  229.     management.  It basically provides the process abstraction and a means 
  230.     for processes to communicate. It is designed to be portable between 
  231.     computer architectures, using high-level languages such as C or C++ and
  232.     reducing the machine-dependant component to a minimal bottom layer.
  233.     The microkernel appears as a layer between the hardware layer and a 
  234.     layer consisting of system components called 'subsystems'.
  235.     Their size can vary from about 10Kb to several hundred kilobytes 
  236.     of executable code and static data.
  237.  
  238.     * Synchronisation primitives offered to CHORUS threads?
  239.     The CHORUS microkernel (v3 r5.x) offers the following synchronisation
  240.     primitives:
  241.     - mutexes
  242.     - (counting) sempahores
  243.     - spin locks (supervisor applications only)
  244.     - mini messages (supervisor applications only)
  245.  
  246.     Other synchronisation primitives such as condition variables and
  247.     reader/writer locks can be built on top of those basic primitives.
  248.  
  249.     * Do CHORUS threads support specific data?
  250.     Yes. The microkernel supports so-called "software registers".
  251.     Each thread has two software registers which are systematically 
  252.     saved/restored by the microkernel upon a thread context switch. 
  253.     The software registers can be read/written through threadStoreR(K) 
  254.     and threadLoad(K) system calls.
  255.     A software register typically contains a pointer to a per-thread
  256.     private data area. Via software registers, one can implement e.g.
  257.     a per-thread value of "errno".
  258.  
  259.     * Distributed synchronization service on top of the CHORUS microkernel?
  260.     This work is part of a PhD thesis undertaken by Stephane Eranian 
  261.     <eranian@chorus.fr> implementing distributed synchronization service on 
  262.     top of the CHORUS microkernel. It implements pure mutex (no mr/sw).
  263.     The synchronization is achieved using a token-based algorithm through
  264.     a server. Its main role is to manage token creation, deletion and sharing 
  265.     among sets of clients. For more information contact S. Eranian.
  266.  
  267. 4.2. Supported Microprocessors
  268.      -------------------------
  269.   Various versions of the CHORUS microkernel have been ported to a
  270. variety of microprocessors, either by Chorus Systems or by its 
  271. clients:
  272.  
  273.     - i386/i486/Pentium (various PC/ATs)
  274.     - mc68030/mc68360/mc68040 (MVME147S, QUADS, MVME167S)
  275.     - mc88k
  276.     - SPARC (SPARCstation SLC, SPARCstation Classic, SPARC CPU-3CE)
  277.     - transputer T425/T805
  278.     - R3000/R4000 (Sony 3410)
  279.     - PA-RISC (HP 9000/834 and 9000/720)
  280.     - YMP (Cray YMP)
  281.  
  282. 4.3. Porting on various platforms
  283.      ----------------------------
  284.     * Chorus on Macintosh?
  285.     The INT (Institut National des Telecommunications, Evry, France) has
  286.     ported the v3 r3 version of the CHORUS microkernel to a Macintosh II CX
  287.     (mc68030-based). CHORUS and MacOS coexist and cooperate on the same
  288.     hardware.
  289.     The paper "Cohabitation and Cooperation of Chorus and MacOS", by
  290.     Christian Bac and Edmond Garnier, was presented at the Usenix Symposium
  291.     on Microkernels and Other Kernel Architectures in Sep 93 in San Diego.
  292.     You can find the paper in the proceedings. It is available from 
  293.     ftp.int-evry.fr:/pub/systeme.
  294.  
  295.     In the same directory you will also find another paper on the same
  296.     subject: "ChorusToolbox : MacOS running on top of Chorus", by Christian
  297.     Bac and Hong Quang Nguyen from INT. This paper was presented at SUUG'94
  298.     in April 94 in Moscow.
  299.  
  300.     * CHORUS on transputers?
  301.     Archipel, Chorus and SGS/Thomson Inmos have ported the CHORUS
  302.     microkernel and the CHORUS/MiX V.3.2 subsystem (SVR3.2 compatible) to
  303.     T425 and T805 transputers. This was done in the context of the Esprit
  304.     project "Harmony" (EC-funded R&D). Initially, a T9000 port was planned to
  305.     be available by now. Due to a delay in the availability of the T9000,
  306.     the CHORUS port (which is underway now), has shifted as well.
  307.       Inmos and Chorus have been working together in order to assure that
  308.     CHORUS/MiX (i.e. UNIX) will run in an optimal manner on the T9000.
  309.  
  310.     * CHORUS on 64-bit architecture?
  311.     CHORUS has been ported to DEC's Alpha, Cray Research's YMP and 
  312.     MIPS' R4000.
  313.  
  314.     * Port of CHORUS on HP-PA?
  315.     On December 1st Jon Inouye <jinouye@cse.ogi.edu> wrote:
  316.  
  317.         Prof. Jonathan Walpole supervised a port of the CHORUS v3.3 
  318.         nucleus to the Hewlett-Packard 9000/834 workstation from late 
  319.         1990 to mid-1991. This was part of a funded research project 
  320.         to evaluate the CHORUS operating system with respect to the 
  321.         Hewlett-Packard PA-RISC architecture. The nucleus did not 
  322.         support any disk/network drivers and performed all console/
  323.         keyboard I/O though IODC (PROM) routines. A CHORUS/MiX V.3.2 
  324.         Process Manager (PM) port was partially completed to the point 
  325.         where UNIX shells and certain system calls were supported ... 
  326.         but not a UNIX file system.
  327.  
  328.         Since then, I have been porting Chorus/MiX V.3.2 (with the v3.4 
  329.         nucleus) to the HP 9000/720. Since I am performing this port in 
  330.         my spare time it is not progressing very fast. The v3.4 nucleus 
  331.         runs along with a serial driver. It lacks other device drivers, 
  332.         FP emulation support (though basic FP operations are supported) 
  333.         and still uses the old HP-UX PDIR structure rather than the more 
  334.         recent HPT. The Ethernet driver is still being debugged as is an 
  335.     ancient version of the MiX V.3.2 PM. The port is being used for 
  336.         virtual memory experiments.
  337.  
  338.         Both ports use a considerable amount (over 40,000 lines combined) 
  339.         of HP-UX source code for the assembly language utilities, boot up, 
  340.         I/O initialization, and device drivers. The 834 port uses a Tut 
  341.         (HP-UX 2.0 modified to run Mach 2.0) base and the 720 port uses 
  342.         a HP-UX 8.0 base. For this reason, we have not been able to release 
  343.         anything because of all the legal implications ... HP, Chorus, USL 
  344.         copyrights.
  345.  
  346.         The evaluation is available as a series of OGI technical reports 
  347.         which can be obtained via anonymous ftp from cse.ogi.edu (129.95.20.2)
  348.         in the directory /pub/tech-reports or via the URL:
  349.         "http://www.cse.ogi.edu/DISC/projects/pa-chorus/pa-chorus.html".
  350.  
  351. 4.4. Scheduling and real-time
  352.      ------------------------
  353.     * Scheduling mechanisms and scheduling policies
  354.     The CHORUS microkernel makes a distinction between scheduling mechanism
  355.     and scheduling policies. The core scheduler within the microkernel does
  356.     pure preemptive scheduling (SCHED_FIFO in POSIX RT terms). On top of
  357.     that, different scheduling policies can be implemented in the form of
  358.     scheduling classes; each class communicates with the core scheduler and
  359.     can make its own scheduling decisions within that class based upon
  360.     attributes (priorities, deadlines, etc) and behaviour (time-slicing,
  361.     SCHED_RR, ...).
  362.       Today, 4 scheduling classes are provided: a default class and the 3
  363.     UNIX SVR4 classes (SVR4_TS, SVR4_RT and SVR4_SYS). Work is in progress
  364.     for additional classes (deadline, fair-share, etc) cf the work done 
  365.     by Olivier Gaultier and Olivier Metais at CNAM Paris on the implementation
  366.     of an EDF (Earliest Deadline First) policy in the CHORUS kernel.
  367.  
  368.     * Relative cost of context switch between user and supervisor threads?
  369.     User threads/actors have their own address spaces, and are protected
  370.     from other user address actors.
  371.     Supervisor threads/actors all share the supervisor address space,
  372.     each supervisor actor has its own "slot" in the supervisor address
  373.     space.
  374.  
  375.     For comparison, let's take:
  376.         [U] a context switch between 2 user threads in different user 
  377.             actors,
  378.         [S] a context switch between 2 supervisor threads in different
  379.             supervisor actors
  380.  
  381.     Unlike [U], [S] does not require the saving/restoring of the memory
  382.     context, so [S] is less costly. For the CHORUS/Nucleus v3 r5.2 on 
  383.     a i486/50MHz, the ratio [U]/[S] is 1.57.
  384.  
  385. 4.5. CHORUS on Transputers
  386.      ---------------------
  387.     * On transputers, how to communicate from CHORUS to UNIX (SunOS)?
  388.     There is no standard way to do this with CHORUS. This is the kind of 
  389.     things CHORUS/MiX is there for. 
  390.     Specific to transputer, you can use emulated links. On your 
  391.     workstation run a daemon, the "Aserver", which comunicate
  392.     with your b300 box. Together they emulate transputer virtual links 
  393.     over TCP/IP. These links can then be used by transputer and Unix 
  394.     applications to communicate. For details on how to do that, see 
  395.     the sections on the Aserver in the CHORUS documentation (CS/TR-94-82.1
  396.     and CS/TR-94-81.1).
  397.  
  398.     * Use of the INMOS RTL for the C-toolchain to work with sockets?
  399.     [Answer on Dec. 6, 1994 from B. Wipfel <raw@unislc.slc.unisys.com>]:
  400.  
  401.       Guessing that you want to make socket calls from one of your actors,
  402.     and have the B300 handle them in the normal way, the trouble is that
  403.     the transputer implementation of CHORUS uses AServer, not IServer. 
  404.     Since AServer communication is encapsulated in IServer MEGA_PACKETS, 
  405.     the B300 never gets to see any of the socket packets and passes 
  406.     everything to the host. 
  407.  
  408.     A real option is to write a new AServer server to provide your socket 
  409.     service. In this case, all communication will go to the host, and it 
  410.     will make the socket calls on behalf of your actor in the target system. 
  411.     The B300 wouldn't be involved, other than maintaining normal AServer 
  412.     communication with the host. This is kind of a shame, since the B300 
  413.     has the necessary functionality.
  414.  
  415.     A last option might be to use a second root link. Wire up two links 
  416.     from the B300 to your transputer network. Boot the network via one of 
  417.     the links. Configure the second link as a network "EDGE". Have your 
  418.     actor connect to the edge link with one of the AServer routines; 
  419.     something like cmLinkOpen("/dev/raw/00") ? Once the link is open, and 
  420.     you have the channel pointers, it might be possible to attach the 
  421.     socket library channels to these channels. You'll need to do 
  422.     communication via CHORUS' channel I/O routines however. 
  423.  
  424.     * If we have made ourselves a sockgateway process, configured in 
  425.     the .cfs file as:
  426.      ....
  427.     interface(input fromhost, output tohost,
  428.           input formChorus,
  429.           output toChorus);
  430.  
  431.     Where do we connect the input and outputs ?
  432.     [Answer on Nov. 25, 1994 from N. Stephen <stephen@osf.org>]:
  433.  
  434.       I don't know what release you might have, but look up the #device 
  435.     primitive in the build tool users manual. This primitive allows you 
  436.     to attach native transputer processes' channels (which normally 
  437.     control devices) to the CHORUS world, and does all the necessary 
  438.     wiring so that these channels are accessible from the connection 
  439.     manager. There may also be an example of this being done in one 
  440.     of the tutorials, if you have them with your release - the CHORUS 
  441.     Nucleus Tutorial (2), mixing CHORUS and Native transputer code.
  442.  
  443. 4.6. Comparison with other OS
  444.      ------------------------
  445.     * differences between Mach and CHORUS?
  446.     There are a lot of similarities between the concepts of the 
  447.     CHORUS v3 r5 microkernel and the Mach 3.0 microkernel: IPC, threads, 
  448.     memory management. 
  449.  
  450.     Some of the differences are:
  451.  
  452.     ------------------------------------------
  453.     Feature                     Mach    CHORUS
  454.     ------------------------------------------
  455.     Supervisor actors/tasks     no      yes
  456.     Device drivers out of uK    no      yes
  457.     Global object (port) names  no      yes
  458.     Typed messages              yes     no
  459.     Realtime                    no?     yes
  460.     Sender port                 no      yes
  461.     Send-once                   yes     no
  462.     RPC                         no?     yes
  463.     Reliable IPC                yes     no
  464.     Port group (destination)    no      yes
  465.     Scheduling classes          ?       yes
  466.     (Counting) semaphores       no      yes
  467.     Condition variables         yes     no
  468.     Support for non-VM machines no?     yes
  469.     ------------------------------------------
  470.  
  471.     See also the reference [Dean, 92] (cf. section 2.4)
  472.     for more elements of comparison between the two kernels.
  473.  
  474. 4.7. Performances
  475.      ------------
  476.     * Is there any system for performance analysis?
  477.     As far as the CHORUS microkernel applications ("actors") are 
  478.     concerned, the CHORUS/Profiler and the CHORUS benchmarks can be 
  479.     used.
  480.     The CHORUS/Profiler allows one to obtain and display symbolic
  481.     call-graph profile data for actors (similar to UNIX' gprof(1)):
  482.     callers, calllees, absolute and relative time spent in different
  483.     procedures within one actor. Actors are to be compiled with the 
  484.     -p option.  The profiler consists of a supervisor actor (PROF) 
  485.     plus 2 CHORUS/MiX utilities.  Profiling be can enabled/disabled 
  486.     dynamically using the CHORUS/MiX utility profctl(1).  profctl(1) 
  487.     stores the raw profiling data in a UNIX file, which can then be 
  488.     exploited by the report generator profrpg(1) in order to produce 
  489.     a human-readable profile report. See ftp.chorus.fr:/pub/chorus-
  490.     datasheets/Profiler_v3_r4.{ascii,ps.Z}.
  491.     CHORUS benchmarks allow you to get performance figures for 
  492.     individual microkernel system calls. For some system calls, like 
  493.     ipcSend(K), you get performance figures for different cases/parameters 
  494.     (small/medium/big message sizes). These basic figures can also help 
  495.     you to analyse and tune the performance of your microkernel applications.
  496.  
  497.     In the context of the ESPRIT project Ouverture, Alcatel, Siemens and
  498.     Chorus have designed and implemented so-called hooks for monitoring 
  499.     and debugging in the CHORUS microkernel. These hooks are a clean set 
  500.     of new microkernel system calls which allow monitoring and debugging 
  501.     tools (e.g., PATOC, PARTAMOS) to be informed about the occurrence of 
  502.     events they're interested in (context switch, message arrival, thread
  503.     creation, etc). They will be available in a future CHORUS product
  504.     release.
  505.  
  506.     PATOC is a graphical tool (Motif-based) that allows to monitor 
  507.     applications running on CHORUS. It is event based and is able 
  508.     to display its information is various forms (diagrams, bar-charts 
  509.     etc). PATOC is not a product but rather a working prototype. 
  510.  
  511. 4.8. Object Oriented Issues
  512.      ----------------------
  513.     * How is CHORUS Object-Oriented?
  514.     The major part (>90%) of the CHORUS microkernel is written in C++. 
  515.     OO techniques are used in the implementation of the microkernel, but the
  516.     API exported by the microkernel is a traditional procedure call based
  517.     interface (like UNIX).
  518.  
  519. 5. OS Personalities
  520.    ================
  521. 5.1. OS personalities available on top of CHORUS?
  522.      -------------------------------------------
  523.   Chorus Systems has developed the following personalties:
  524.  
  525.     - SVR4.0
  526.     - SVR3.2
  527.     - SCO ODT 3.0
  528.     - BSD4.3
  529.     - object-oriented (CHORUS/COOL)
  530.     - POSIX real-time (POSIX 1003.1b/.1c, former .4/.4a)
  531.  
  532.   Others have developed, or are developing, personalities for SVR4.2 MP,
  533. UNICOS, MacOS, CHILL, ESTEREL, TINA DPE, and a number of (proprietary) 
  534. real-time OSs.
  535.  
  536. 5.2. CHORUS/MiX V.3.2
  537.      ----------------
  538.  
  539.     * What is the link between a u_thread and a kernel thread?
  540.     A u_thread is an abstraction, created by the CHORUS/MiX V.3.2
  541.     subsystem, on top of the microkernel threads (like a UNIX process 
  542.     is created on top of a CHORUS actor).  Each u_thread is mapped 1-1 
  543.     to a microkernel thread. A u_thread has some UNIX-specific attributes, 
  544.     like signal context, which is managed at the CHORUS/MiX subsystem 
  545.     level, as an added value w.r.t. a microkernel thread.
  546.  
  547.     * Which synchronisation primitives are offered to u_threads?
  548.     Sempahores and mutexes.
  549.  
  550.     * Do u_threads support Thread Specific Data?
  551.     Yes, through the threadsafe C library (c_threadPrivate(3CT),
  552.     c_getPrivate(3CT)). These functions are in fact built on top of the
  553.     software registers described for the kernel threads (cf 4.1).
  554.  
  555.     * How are u_threads scheduled?
  556.     By the microkernel, just like any other thread.
  557.     If one want to implement N user level threads on top of 1 kernel 
  558.     thread, he need a user level scheduler in some kind of run-time 
  559.     library (just like an Ada run-time schedules multiple Ada tasks 
  560.     within one Ada program).
  561.